﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Aptea.OpenXmlOffice;
using eCRAM.Dao;
using eCRAM.Model;

namespace eCRAM.Bll
{
    /// <summary>
    /// Classe de génération d'un fichier excel contenant un onglet avec le tableau et un onglet avec le detail pour les macros
    /// </summary>
    class GraphAndSaveExcelFileGenerator
    {
        /// <summary>
        /// Instance du manager Excel
        /// </summary>
        public ExcelManager ExcelManager { get; set; }
        /// <summary>
        /// Cram à exporter
        /// </summary>
        public Cram Cram { get; set; }
        /// <summary>
        /// Predicat de sélction des projets
        /// </summary>
        public Func<CramLine, bool> ProjectPredicate { get; set; }
        /// <summary>
        /// Predicat de sélction des congés
        /// </summary>
        public Func<CramLine, bool> HolidayPredicate { get; set; }

        /// <summary>
        /// Genére le fichier Excel
        /// </summary>
        public void Generate()
        {
            // ajout de l'onglet "graphique"
            var userCramExcelFileGenerator = new GraphWorksheetGenerator
            {
                NbProject = int.Parse(ParameterRepository.GetByEnum(EnumParameter.NbProjetEsportExcel).Value),
                ProjectPredicate = ProjectPredicate,
                HolidayPredicate = HolidayPredicate,
                ExcelManager = ExcelManager,
                Cram = Cram
            };
            userCramExcelFileGenerator.Generate();

            // ajout de l'onglet "save"
            new SaveWorksheetGenerator (ExcelManager){  Cram = Cram, ProjectPredicate = ProjectPredicate }.Generate();
        }
    }
}
